/******************************************************************************* * Copyright (c) 2008, 2009 Versant Corp. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Markus Alexander Kuppe (Versant Corp.) - https://bugs.eclipse.org/248103 ******************************************************************************/ package org.eclipse.ui.tests.propertysheet; import java.util.HashMap; import org.eclipse.core.commands.Command; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.expressions.IEvaluationContext; import org.eclipse.core.runtime.IAdapterFactory; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.ui.IPageLayout; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IViewReference; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.commands.ICommandService; import org.eclipse.ui.handlers.IHandlerService; import org.eclipse.ui.part.IShowInSource; import org.eclipse.ui.part.ShowInContext; import org.eclipse.ui.tests.SelectionProviderView; import org.eclipse.ui.views.properties.PropertySheet; import org.eclipse.ui.views.properties.PropertyShowInContext; /** * @since 3.5 * */ public class NewPropertySheetHandlerTest extends AbstractPropertySheetTest { private TestNewPropertySheetHandler testNewPropertySheetHandler; public NewPropertySheetHandlerTest(String testName) { super(testName); } @Override protected void doSetUp() throws Exception { super.doSetUp(); testNewPropertySheetHandler = new TestNewPropertySheetHandler(); } private ExecutionEvent getExecutionEvent() { IHandlerService handlerService = PlatformUI .getWorkbench().getService(IHandlerService.class); ICommandService commandService = PlatformUI .getWorkbench().getService(ICommandService.class); IEvaluationContext evalContext = handlerService.getCurrentState(); Command command = commandService .getCommand(TestNewPropertySheetHandler.ID); ExecutionEvent executionEvent = new ExecutionEvent(command, new HashMap(), null, evalContext); return executionEvent; } /** * Test method for * {@link org.eclipse.ui.tests.propertysheet.TestNewPropertySheetHandler#getShowInContext(org.eclipse.core.commands.ExecutionEvent)} * . * * @throws ExecutionException * @throws PartInitException * StructuredSelection.EMPTY, */ public final void testGetShowInContextFromPropertySheet() throws ExecutionException, PartInitException { activePage.showView(IPageLayout.ID_PROP_SHEET); PropertyShowInContext context = testNewPropertySheetHandler .getShowInContext(getExecutionEvent()); assertNotNull(context); assertNull(context.getSelection()); assertNull(context.getPart()); assertNull(context.getInput()); } /** * Test method for * {@link org.eclipse.ui.tests.propertysheet.TestNewPropertySheetHandler#getShowInContext(org.eclipse.core.commands.ExecutionEvent)} * . * * @throws ExecutionException * @throws PartInitException */ public final void testGetShowInContextFromAShowInSource() throws ExecutionException, PartInitException { IAdapterFactory factory = new IAdapterFactory() { @Override public Object getAdapter(Object adaptableObject, Class adapterType) { return new IShowInSource() { @Override public ShowInContext getShowInContext() { return new ShowInContext(StructuredSelection.EMPTY, StructuredSelection.EMPTY); } }; } @Override public Class[] getAdapterList() { return new Class[] { IShowInSource.class }; } }; try { SelectionProviderView selectionProviderView = (SelectionProviderView) activePage .showView(SelectionProviderView.ID); selectionProviderView.setSelection(StructuredSelection.EMPTY); Platform.getAdapterManager().registerAdapters(factory, SelectionProviderView.class); PropertyShowInContext context = testNewPropertySheetHandler .getShowInContext(getExecutionEvent()); assertNotNull(context); assertEquals(StructuredSelection.EMPTY, context.getSelection()); assertEquals(StructuredSelection.EMPTY, context.getInput()); assertEquals(selectionProviderView, context.getPart()); } finally { Platform.getAdapterManager().unregisterAdapters(factory); } } /** * Test method for * {@link org.eclipse.ui.tests.propertysheet.TestNewPropertySheetHandler#getShowInContext(org.eclipse.core.commands.ExecutionEvent)} * . * * @throws ExecutionException * @throws PartInitException */ public final void testGetShowInContextWithNoShowInSource() throws PartInitException, ExecutionException { SelectionProviderView selectionProviderView = (SelectionProviderView) activePage .showView(SelectionProviderView.ID); assertFalse(selectionProviderView instanceof IShowInSource); assertNull(selectionProviderView.getAdapter(IShowInSource.class)); PropertyShowInContext context = testNewPropertySheetHandler .getShowInContext(getExecutionEvent()); assertNotNull(context); assertNull(context.getSelection()); assertNull(context.getInput()); assertEquals(selectionProviderView, context.getPart()); } void hideAndAssertNoParts() { IWorkbenchWindow[] windows = fWorkbench.getWorkbenchWindows(); for (IWorkbenchWindow w : windows) { IWorkbenchPage ap = w.getActivePage(); hideAndAssertNoParts(ap); } } void hideAndAssertNoParts(IWorkbenchPage page) { IViewReference[] viewReferences = page.getViewReferences(); for (IViewReference view : viewReferences) { page.hideView(view); } page.closeAllEditors(false); processEvents(); assertNull(page.getActivePart()); } /** * Test method for * {@link org.eclipse.ui.tests.propertysheet.TestNewPropertySheetHandler#getShowInContext(org.eclipse.core.commands.ExecutionEvent)} * . */ public final void testGetShowInContextWithNoActivePart() { hideAndAssertNoParts(); try { testNewPropertySheetHandler.getShowInContext(getExecutionEvent()); } catch (ExecutionException e) { return; } fail("Expected ExecutionException due to no active part"); } /** * Test method for * {@link org.eclipse.ui.tests.propertysheet.TestNewPropertySheetHandler#findPropertySheet(org.eclipse.core.commands.ExecutionEvent, org.eclipse.ui.views.properties.PropertyShowInContext)} * . * * @throws ExecutionException * @throws PartInitException */ public final void testFindPropertySheetWithoutActivePart() throws PartInitException, ExecutionException { hideAndAssertNoParts(); try { testNewPropertySheetHandler.findPropertySheet(getExecutionEvent(), new PropertyShowInContext(null, StructuredSelection.EMPTY)); } catch (ExecutionException e) { return; } fail("Expected ExecutionException due to no active part"); } /** * Test method for * {@link org.eclipse.ui.tests.propertysheet.TestNewPropertySheetHandler#findPropertySheet(org.eclipse.core.commands.ExecutionEvent, org.eclipse.ui.views.properties.PropertyShowInContext)} * . * * @throws ExecutionException * @throws PartInitException */ public final void testFindPropertySheetWithOtherSheetActive() throws PartInitException, ExecutionException { propertySheet = (PropertySheet) activePage .showView(IPageLayout.ID_PROP_SHEET); assertTrue(countPropertySheetViews() == 1); PropertySheet foundSheet = testNewPropertySheetHandler .findPropertySheet(getExecutionEvent(), new PropertyShowInContext(propertySheet, StructuredSelection.EMPTY)); assertNotNull(foundSheet); assertNotSame(propertySheet, foundSheet); assertTrue(countPropertySheetViews() == 2); } /** * Test method for * {@link org.eclipse.ui.tests.propertysheet.TestNewPropertySheetHandler#findPropertySheet(org.eclipse.core.commands.ExecutionEvent, org.eclipse.ui.views.properties.PropertyShowInContext)} * . * * @throws ExecutionException * @throws PartInitException */ public final void testFindPropertySheetWithSPVActive() throws PartInitException, ExecutionException { IViewPart showView = activePage.showView(IPageLayout.ID_PROP_SHEET); IViewPart spv = activePage.showView(SelectionProviderView.ID); assertTrue(countPropertySheetViews() == 1); PropertySheet foundSheet = testNewPropertySheetHandler .findPropertySheet(getExecutionEvent(), new PropertyShowInContext(spv, StructuredSelection.EMPTY)); assertNotNull(foundSheet); assertEquals(showView, foundSheet); assertTrue(countPropertySheetViews() == 1); } /** * Test method for * {@link org.eclipse.ui.tests.propertysheet.TestNewPropertySheetHandler#findPropertySheet(org.eclipse.core.commands.ExecutionEvent, org.eclipse.ui.views.properties.PropertyShowInContext)} * . * * @throws ExecutionException * @throws PartInitException */ public final void testFindPropertySheetWithPinnedPSandSPVActive() throws PartInitException, ExecutionException { PropertySheet sheet = (PropertySheet) activePage .showView(IPageLayout.ID_PROP_SHEET); sheet.setPinned(true); IViewPart spv = activePage.showView(SelectionProviderView.ID); assertTrue(countPropertySheetViews() == 1); PropertySheet foundSheet = testNewPropertySheetHandler .findPropertySheet(getExecutionEvent(), new PropertyShowInContext(spv, StructuredSelection.EMPTY)); assertNotNull(foundSheet); assertNotSame(sheet, foundSheet); assertTrue(countPropertySheetViews() == 2); } /** * Test method for * {@link org.eclipse.ui.tests.propertysheet.TestNewPropertySheetHandler#findPropertySheet(org.eclipse.core.commands.ExecutionEvent, org.eclipse.ui.views.properties.PropertyShowInContext)} * . * * @throws ExecutionException * @throws PartInitException */ public final void testFindPropertySheetWithUnpinnedPSandSPVActive() throws PartInitException, ExecutionException { PropertySheetPerspectiveFactory.applyPerspective(activePage); PropertySheet sheet = (PropertySheet) activePage .showView(IPageLayout.ID_PROP_SHEET); IViewPart showView = activePage.showView(SelectionProviderView.ID); PropertyShowInContext context = new PropertyShowInContext(showView, StructuredSelection.EMPTY); assertTrue(sheet.show(context)); sheet.setPinned(true); assertTrue(countPropertySheetViews() == 1); PropertySheet foundSheet = testNewPropertySheetHandler .findPropertySheet(getExecutionEvent(), context); assertNotNull(foundSheet); assertEquals(sheet, foundSheet); assertTrue(countPropertySheetViews() == 1); } }